/*
 * @Author: complex 1944755442@qq.com
 * @Date: 2024-01-24 21:46:58
 * @LastEditors: complex 1944755442@qq.com
 * @LastEditTime: 2024-01-25 18:01:13
 * @FilePath: /prjs/my-linux-snake/APP/listStruct.h
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#ifndef _LIST_STRUCT_H
#define _LIST_STRUCT_H


typedef unsigned short uint16_t;
//定义参数结构体
typedef struct 
{
    uint16_t x;
    uint16_t y;
}ElemType_t, SnakeNode;

//定义单个节点
typedef struct Node
{
    //ElemType_t data;
    ElemType_t data;
    struct Node * pPrev;
    struct Node * pNext;
}ListNode, *ListNodep;

//定义队列的数据结构
typedef struct
{
    ListNode *front;//head
    ListNode *rear;//tail
    uint16_t length;
}List, *Listp;


//1.新建一个队列.（首尾为自身）,长度为1，返回Listp
Listp create_list(void);
//2.新建单个节点,需要参数：队列Listp, 节点ElemType_t数据；返回Nodep
ListNodep create_node(uint16_t x, uint16_t y);
//3.尾插队列
int list_tail_insert(Listp listp, ListNodep nodep);
//4.头插、头出、删除队列元素（暂时没需求)

//5.遍历整个队列
void traverse_list(Listp listp, int mode);
//6. 查找队列元素
//7. 销毁整个队列
int free_list(void);

void list_module_test(void);

#endif /*_LIST_STRUCT_H*/